package com.sky.controller.admin.statistics;

import com.sky.dto.BookCategoryStatisticsDTO;
import com.sky.result.Result;
import com.sky.service.BookCategoryStatisticsService;
import com.sky.vo.BookCategoryStatisticsVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDate;
import java.util.List;

/**
 * 图书分类统计相关接口
 * 该Controller主要用于处理图书分类统计相关的请求，包括：
 * 1. 获取各分类图书数量统计
 * 2. 获取各分类借阅量统计
 * 3. 分析不同分类图书的受欢迎程度
 */
@RestController
@RequestMapping("/admin/statistics/category")
@Api(tags = "图书分类统计相关接口")
@Slf4j
public class BookCategoryStatisticsController {

    @Autowired
    private BookCategoryStatisticsService bookCategoryStatisticsService;

    /**
     * 获取图书分类统计信息
     * 
     * @param startDate 统计开始日期，格式：yyyy-MM-dd，可选参数
     * @param endDate 统计结束日期，格式：yyyy-MM-dd，可选参数
     * @return 返回包含以下信息的统计结果：
     *         - name: 分类名称
     *         - value: 该分类的图书数量
     */
    @GetMapping("/analysis")
    @ApiOperation("获取图书分类统计信息")
    public Result<List<BookCategoryStatisticsVO>> getCategoryStatistics(
            @DateTimeFormat(pattern = "yyyy-MM-dd") @RequestParam(required = false) LocalDate startDate,
            @DateTimeFormat(pattern = "yyyy-MM-dd") @RequestParam(required = false) LocalDate endDate) {
        
        log.info("获取图书分类统计信息：startDate={}, endDate={}", startDate, endDate);
        
        BookCategoryStatisticsDTO dto = new BookCategoryStatisticsDTO();
        dto.setStartDate(startDate);
        dto.setEndDate(endDate);
        
        List<BookCategoryStatisticsVO> statisticsVOList = bookCategoryStatisticsService.getCategoryStatistics(dto);
        return Result.success(statisticsVOList);
    }
}